实验吧 CTF 编程题(四)

十一:括号表达式

这道题要写,数都数得来,画画图或者模拟整个过程一定会出来结果,我们不妨看看能否找出规律。举个例子,P=4 5 6 6 6 6,而每个右括号所在的括号内包含的括号数为W=1 1 1 4 5 6。P中的每一个数可以代表的是一个右括号,则数字4,不用说,必然与前面一左括号匹配,即为,数字4与5之间两个右括号有(5-4)个左括号,而数字4与5之间没有其他数字也即没有其他右括号,则这个左括号必然是与数字5所代表的右括号匹配,则也为1,同理数字5与6也是这样,到了第二个数字6,其往前找到第一个数字6,中间没有左括号,则继续往前找到5,数字5与数字6中间有(6-5)个左括号,而两个数之间还有一个右括号,则不行,得继续往前,找到4,同理不行,前面没有数了,那么就看这个数字6(第二个的)在p中是第几个就好了,应该说是与找到合理的数字下表之差,往后依旧。则对于4 6 6 6 6 8 9 9 9 即为 1 1 2 4 5 1 1 3 9 转化为代码即为

1
2
3
4
5
6
7
import
a=[0,4,6,6,6,6,8,9,9,9]
for i in range(1,len(a)):
j=i-1
while(a[i]-a[j]<i-j):
j=j-1
print i-j,

十二:手脑并用

这题高中时代遇见过,但当时没这么大,回到问题。有多少个零,其实就是看看这个数能分解出多少个5,一个5与任意偶数相乘都会有0,注意这是阶乘。

1
2
3
4
5
6
7
8
import
num=0
for i in range(1,6789):
j=i
while(j%5==0):
num+=1
j=j/5
print num

十三:大数据问题
由刚刚问题可知,30!能分解出来5个5也即20!及其以后的数字末尾5个数都是0,则我们要求的只是1!+….29!用python

1
2
3
4
5
6
7
8
9
sum=0
for i in range(2,30):
b=1
for j in range(1,i):
b=b*j
print b
sum=sum+b
#print sum
print '--------',sum

十四:斐波那契数列
这个名字很出名的,很经典

1
2
3
4
5
6
a=[1,1,1]
for i in range(3,100):
b=a[i-1]+a[i-2]+a[i-3]
a.append(b)
print a[99]
print str(a[99])[:8]

十五:聪明的打字员

说实话,这道题做不来,给个传送门http://www.cnblogs.com/zhanglanyun/archive/2011/05/27/2059544.html

 

文章目录